//
//  KKStatusViewModel.swift
//  KKWeibo
//
//  Created by kassia on 16/7/15.
//  Copyright © 2016年 kassia. All rights reserved.
//

import UIKit

class KKStatusViewModel: NSObject {

   
    var retweetStr: String? // 转发数内容显示
    
    var commentStr: String? // 评论数内容显示
   
    var unlikeStr: String? // 赞数内容显示
   
    var retweetContent: String? // 微博转发内容
   
    var mbrandImage: UIImage? // 处理会员等级
    
    var sourceContent: String? //处理来源
    
    var verifiedTypeImage: UIImage? // 认证等级
    
    /*
    1. 把时间对象转成需要字符串
    如果是今年
    判断是否是今天
    判断是否是在1分钟之前
    - 刚刚
    判断是否是在1小时之前
    - xxx分钟前
    其它
    - xx小时前
    判断是否是昨天
    - 昨天 10:10
    其他
    - 07-10 10:10
    如果不是今年
    - 2015-10-29 10:10
    */

    var timeStr: String? {
    
        guard let createAtStr = self.status?.created_at else {
        
            return nil
        
        }
        
       // print(createAtStr)
        
        return NSDate.sinaDate(createAtStr).sinaDateString
    
    }
    var status: KKStatus? //  持有微博模型
    
    init(status: KKStatus) {
       
       super.init()  // 初始化
       self.status = status
        
       retweetStr = handelCount(status.reposts_count, defaultLable: "转发") // 创建转发按钮
       commentStr = handelCount(status.comments_count, defaultLable: "评论") //创建评论按钮
       unlikeStr = handelCount(status.attitudes_count, defaultLable: "赞") //创建点赞按钮
        
        // 处理转发微博
        handleretweetContent(status)
        
        // 处理会员等级
        handleVIP(status.user?.mbrank ?? 0)
        
        // 处理来源字符
        handleSource(status.source ?? "")
        
        //处理认证等级
        handleVerifiedTypeImage(status.user?.verified_type ?? 0)
    }
    
    // 处理认证等级
    private func handleVerifiedTypeImage(verifiedType: Int) {
    
        //  认证类型等级 认证类型 -1 没有认证 ，0 认证用户，2，3，5 企业认证 ， 220 达人
        switch verifiedType {
        
        case 0:
            
            verifiedTypeImage = UIImage(named: "avatar_vip") // 认证用户
            
        case 2,3,5:
            
            verifiedTypeImage = UIImage(named: "avatar_enterprise_vip") // 企业认证
            
        case 200:
            
            verifiedTypeImage = UIImage(named: "avatar_grassroot")// 达人
            
        default:
            
            verifiedTypeImage = nil // 没有认证

        }
    
    }
    
    
    // 处理来源字符
    private func handleSource(source: String) {
    
        guard let range1 = source.rangeOfString("\">"), let range2 = source.rangeOfString("</") else {
            
            return
        }
        
        let startIndex = range1.endIndex // 结束位置
        
        let endIndex = range2.startIndex // 开始位置
        
        sourceContent = "来自" + source.substringWithRange(startIndex ..< endIndex) // 截取字符串
    
    }
    
    
    
    // 处理会员等级
    private func handleVIP(mbrank: Int) {
    
        if mbrank >= 1 && mbrank <= 6 {
        
            let image = UIImage(named: "common_icon_membership_level\(mbrank)")
            
            mbrandImage = image
        
        }
    }
    
    //  处理转发微博内容显示
    private func handleretweetContent(status: KKStatus) {
    
        if status.retweeted_status != nil {
        
            guard let name = status.retweeted_status?.user?.screen_name, let text = status.retweeted_status?.text  else {
                
                return
            
            }
            
            retweetContent = "@\(name):\(text)"
        }
    
    
    }
    
    //  处理显示 转发, 评论, 赞的数据样式
    /*
    1. 判断count 是否 大于 0
    - 判断 count 是否大于等于10000
    - 对10000这样的数据进行格式化处理
    - 否则 - 直接显示应有的数字
    否则显示默认标题
    
    */
    private func handelCount(count: Int, defaultLable: String)-> String {
    
        if count > 0 {
        
            if count >= 10000 {
             
                let result = Float(count / 1000) / 10
                //进行格式化处理
                var resultStr = "\(result)万"
                
                if resultStr.containsString(".0") {
                
                    resultStr = resultStr.stringByReplacingOccurrencesOfString(".0", withString: "")
                }
                
                return resultStr
                
            
            } else {
               
                return "\(count)"
            
            }
        
        } else {
        
            return defaultLable
        
        }
    
    
    }
}
